Until recently, the World-Wide Web has largely been used for providing information or content to users. However, the proportion of web-servers offering processing in addition to information is growing. The services offered in this way to the developers of distributed application programs must have defined interfaces so that the developers can program the computer they are programming to call upon the web server to execute a process remotely. This sort of remote execution is well known and was first developed in the form of remote procedure calls (RPC), a more flexible framework then being provided by the Common Object Request Broker Architecture (CORBA), and an even more flexible framework then being provided in the form of Web Services.
The selection of a web-service to form part of a distributed application program is often made by the programmer at design-time (i.e. the programmer hard codes the identity of the service provider in the code he generates). However, in scenarios where the network or the services providers are unstable, this is inflexible. Hence, it is known to provide code which causes the computer requesting the service to decide upon a service provider at run-time. Indeed, ‘late-binding’ like this is seen in Birrell and Nelson's seminal paper ‘Implementing Remote Procedure Calls’, ACM Transactions on Computer Systems, Vol. 2, No. 1, February 1984, Pages 39-59.
One type of such dynamic service selection utilises clients' past experiences of the quality of service provided by different servers. In many implementations, data representing past experiences are shared by each client with other clients. Often, this sharing is achieved by having each client post data representing its experience to a shared database accessible to other clients.
J. Day and R. Deters' paper “Selecting the Best Web Service” presented at the 14th Annual IBM Centers for Advanced Studies Conference, 2004 presents two methods by which a client may ‘reason’ about which service provider to select. One is a rule-based expert system, the other a naïve Bayes reasoner. The downside of deterministic service selection based on shared rankings—namely that the highest ranked service provider tends to be overloaded is recognised. The problem is said to be better dealt with by service selection using the naïve Bayes reasoner, since this classifies services into groups, one member from the group being chosen at random—this introducing a more probabilistic service selection which avoids overloading the highest-ranked provider. The possibility of distributing the performance data in a peer-to-peer like system is mentioned towards the end of the paper. Le-Hung Vu et al in “QoS-based Service Selection and Ranking with Trust and Reputation Management”, suggest that distributing performance data is ‘a bit unrealistic as each service consumer would have to take the heavy processing role of a discovery and reputation system’.
A similar problem is found in peer-to-peer networks which rely on reputation management to overcome the detrimental influence of malign peers. S. Kamvar, M. Schlosser, and H. Garcia-Molina's paper “Eigenrep: Reputation management in p2p networks”, Twelfth International World Wide Web Conference, 2003 proposes a two-fold approach to the problem:                i) with a one-in-ten probability, to try, at random, a peer which has not yet been tried; and, in the other nine-out-of-ten cases        ii) to make the service provider selection of each client probabilistic rather than deterministic—though the probability of selection is still higher the higher the ranking of the provider.        
The present inventors have realised that the level of service in the network can be improved still further.
According to the present invention, there is provided a computer network comprising a plurality of devices interconnected via communication links, each of said devices having access to quality of service data indicating the quality of service provided by said plurality of devices, each of said devices being arranged in operation to respond to a service request by:
selecting one of said other devices to provide the requested service;
requesting the selected device to provide said service;
monitoring the quality of service provided in response to said request;
updating said quality of service data in response to said monitored quality of service;
wherein each device is able to perform two modes of service selection, a first mode using said quality of service data in order to select one or more favoured service providers which have provided a relatively high quality of service in the past, and a second mode in which a service provider is selected probabilistically from the available service providers without favouring said service providers favoured by said first mode of selection;wherein said network maintains exploration quality-of-service data indicating the quality of service achieved using said probabilistic mode of service selection;each device being further arranged in operation to compare said exploration quality-of-service data and said quality of service data relating to said favoured service providers, and to select said second mode of service selection with a probability which increases on said comparison indicating that said second mode is likely to select service providers offering better quality of service than said favoured service providers.
By occasionally trying a mode of service provider selection which does not favour the service providers which would be favoured by a selection technique based solely on past experience, keeping track of the success of this mode of service selection, and then increasing the number of times such a selection technique is adopted should it be found, that this mode of service selection is successful, a much more rapid adaptation to changing circumstances in the peer-to-peer network than has hitherto been provided is achieved.
Preferably, said second mode of service selection involves taking said quality of service data into account so as to reduce the likelihood of said most favoured providers being selected. This provides an even more rapid adaptation to changing circumstances in the peer-to-peer network.
Preferably, said quality of service data comprises local quality of service data stores in each of said devices. This provides implementations which work well even when said communications links are unreliable and which can scale to large numbers of peers.
Preferably, each device reports, to other devices in said network, the quality of service received when adopting said second mode of service selection. This allows the adoption of a probabilistic mode of service selection to spread through the network more rapidly than would otherwise be the case, thus improving the overall level of service provided by the network.